Android アプリにスプラッシュ画面を追加する
スプラッシュ画面 (起動画面とも呼ばれる) は、 Android アプリの読み込み中のシンプルな初期エクスペリエンス。 アプリケーションの準備を整えます。 アプリエンジンの時間を確保しながら ロードしてアプリを初期化します。
概要
Android では、制御できる 2 つの個別の画面があります。 ある起動画面Android アプリの初期化中に表示されます。 そしてスプラッシュスクリーンFlutter エクスペリエンス中に表示される 初期化します。
アプリの初期化
すべての Android アプリには初期化時間が必要ですが、
オペレーティング システムがアプリのプロセスをセットアップします。
Android は、起動画面に
を表示するDrawable
アプリの初期化中。
デフォルトの Flutter プロジェクト テンプレートには定義が含まれています
起動テーマと起動背景の説明。カスタマイズできます
これは編集によってstyles.xml
、テーマを定義できます
だれのwindowBackground
に設定されていますDrawable
それが起動画面として表示されるはずです。
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
加えて、styles.xml
を定義します通常のテーマ適用されるFlutterActivity
打ち上げ後
画面が消えてしまいました。通常のテーマの背景のみが表示されます
スプラッシュ画面が消えた後のほんの一瞬の間、
そして方向転換中、そしてActivity
復元。
したがって、通常のテーマでは
原色に似た単色の背景色
Flutter UIの背景色。
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/normal_background</item>
</style>
AndroidManifest.xml で FlutterActivity を設定する
のAndroidManifest.xml
、 をセットするtheme
のFlutterActivity
打ち上げのテーマに。それから、
メタデータ要素を目的の要素に追加しますFlutterActivity
Flutter に起動テーマから切り替えるように指示します
適切なタイミングで通常のテーマに戻ります。
<activity
android:name=".MyActivity"
android:theme="@style/LaunchTheme"
// ...
>
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Android アプリに希望の起動画面が表示されるようになりました アプリの初期化中。
アンドロイド12
Android 12 で起動画面を設定するには、 チェックアウトAndroid のスプラッシュ スクリーン。
Android 12 以降では、新しいスプラッシュ画面を使用する必要があります
あなたのAPIstyles.xml
ファイル。
Android 12 以降用の代替リソース ファイルを作成することを検討してください。
また、背景画像が以下のものと一致していることを確認してください。
アイコンのガイドライン。
チェックアウトAndroid のスプラッシュ スクリーン詳細については。
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowSplashScreenBackground">@color/bgColor</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/launch_background</item>
</style>
それを確認してくださいio.flutter.embedding.android.SplashScreenDrawable
はいいえマニフェストに設定すると、provideSplashScreen
はいいえこれらの API は非推奨であるため、実装されています。
そうすると、Android の起動画面がスムーズにフェードアウトします。
flutterに入るとき
アプリが起動され、アプリがクラッシュする可能性があります。
一部のアプリでは、最後のフレームを表示し続ける必要がある場合があります。 Flutter の Android 起動画面。例えば、 これにより、単一フレームの錯覚が維持されます。 Dart では追加の読み込みが継続されます。 これを達成するには、次のことを行います。 Android API が役立つ場合があります。
import android.os.Build;
import android.os.Bundle;
import android.window.SplashScreenView;
import androidx.core.view.WindowCompat;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// Aligns the Flutter view vertically with the window.
WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// Disable the Android splash screen fade out animation to avoid
// a flicker before the similar frame is drawn in Flutter.
getSplashScreen()
.setOnExitAnimationListener(
(SplashScreenView splashScreenView) -> {
splashScreenView.remove();
});
}
super.onCreate(savedInstanceState);
}
}
import android.os.Build
import android.os.Bundle
import androidx.core.view.WindowCompat
import io.flutter.embedding.android.FlutterActivity
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// Aligns the Flutter view vertically with the window.
WindowCompat.setDecorFitsSystemWindows(getWindow(), false)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// Disable the Android splash screen fade out animation to avoid
// a flicker before the similar frame is drawn in Flutter.
splashScreen.setOnExitAnimationListener { splashScreenView -> splashScreenView.remove() }
}
super.onCreate(savedInstanceState)
}
}
その後、Flutter で最初のフレームを再実装できます。 Android 起動画面の要素を表示します。 画面上の同じ位置。 この例については、以下を確認してください。Android スプラッシュ スクリーン サンプル アプリ。